home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-12-06 | 11.3 KB | 139 lines | [TEXT/SPM ] |
- /*
- IC Link In Subs.c
-
- C code for more link in stuff.
-
- */
-
- #include <Processes.h>
- #include <AppleEvents.h>
- #include <Aliases.h>
-
- #include "IC Types.h"
- #include "IC Keys.h"
-
- #include "IC Link In Subs.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- // Local Prototypes
- Boolean HaveAliasManager(void);
- Boolean FindProcess(OSType creator,OSType typ,ProcessSerialNumber* process,FSSpecPtr fs);
- OSErr GetVolInfo(StringPtr name,short* vrn,short index);
- OSErr ConfirmAppl(OSType creator,FSSpecPtr fss);
- OSErr ScanVolume(OSType creator,short vref,FSSpecPtr fs);
- OSErr FindApplication(OSType creator,FSSpecPtr fs);
- ICError PrepareToLaunch(AppleEvent* theEvent,Boolean tofront,LaunchParamBlockRec* launchThis);
- ICError CreateGURLEvent(OSType creator,Handle urlh,AppleEvent* theEvent);
- ICError CreateEditPrefEvent(OSType creator,StringPtr key,FSSpecPtr prefsfile,AppleEvent* theEvent);
- ICError LaunchFSSpec(FSSpecPtr fs,AppleEvent* theEvent);
- ICError SendEvent(AppleEvent* theEvent,OSType creator);
- OSErr FSpGetCatInfo(FSSpecPtr fs,short index,CInfoPBRec* pb);
- OSErr FSSpecToFullPath(FSSpecPtr fs,StringPtr path);
- OSErr GetVolumeStuff(StringPtr name,long date,short* vrn);
-
- #ifdef __cplusplus
- }
- #endif
-
- void PasStrCopy(StringPtr from,StringPtr to){
- register unsigned char ch,*f,*t;
-
- ch=from[0];
-
- f=from;
- t=to;
-
- *f=*t;
- f++;
- t++;
-
- while (ch){
- *f=*t;
- f++;
- t++;
- ch--;
- }
-
- }
-
- ICError HaveProcessManager(void){
- long gv;
-
- if ((Gestalt(gestaltOSAttr,&gv)==noErr)&&(gv&gestaltLaunchControl))
- return (ICError)noErr;
-
- return (ICError)unimpErr;
- }
-
- ICError CanInteract(void){
- ICError err=noErr;
- ProcessInfoRec info;
- ProcessSerialNumber process_us,process_foreground;
- Boolean result;
-
- if (HaveProcessManager()==noErr){
- process_us.highLongOfPSN=0;
- process_us.lowLongOfPSN=kCurrentProcess;
-
- err=GetFrontProcess(&process_foreground);
-
- if (err==noErr)
- err=SameProcess(&process_us,&process_foreground,&result);
-
- if ((err==noErr)&&(!result))
- err=errAENoUserInteraction;
- }
-
- return noErr;
- // should this be
- // return err;
- }
-
- Boolean HaveNewStandardFile(void){
- long gv;
-
- return ((Gestalt(gestaltStandardFileAttr,&gv)==noErr)&&(gv&gestaltStandardFile58));
- }
-
- Boolean HaveAliasManager(void){
- long gv;
-
- return ((Gestalt(gestaltAliasMgrAttr,&gv)==noErr)&&(gv&gestaltAliasMgrPresent));
- }
-
- Boolean FindProcess(OSType creator,OSType typ,ProcessSerialNumber* process,FSSpecPtr fs){
- ProcessInfoRec info;
- OSErr oe;
- long gv;
-
- if (HaveProcessManager()==noErr){
- process->highLongOfPSN=0;
- process->lowLongOfPSN=kNoProcess;
- info.processInfoLength=sizeof(ProcessInfoRec);
- info.processName=(StringPtr)0;
- info.processAppSpec=fs;
-
- while (GetNextProcess(process)==noErr){
- if ((GetProcessInformation(process,&info)==noErr)&&(info.processType==typ)&&(info.processSignature==creator))
- return true;
- }
- }
-
- return false;
- }
-
- OSErr GetVolInfo(StringPtr name,short* vrn,short index){
- VolumeParam pb;
- OSErr oe;
-
- if ((name[0]!=0)&&(name[name[0]]!=':')){
- name[name[0]+1]=':';
- name[0]++;
- }
-
- pb.ioNamePtr=name;
- pb.ioVRefNum=*vrn;
- pb